package xyz.xiezc.ioc.common;

import java.lang.annotation.Annotation;
import java.util.List;

/**
 * 自定义注解的处理器接口.  这个接口只能处理类上的注解, 字段中的注解自己在业务逻辑中处理<br>
 * 如果你要处理某个自定义接口, 请实现这个接口. 并且使用@Component注解将实现类注入容器中
 *
 * @author wb-xzc291800
 * @date 2019/04/04 15:01
 */
public interface AnnotationHandler<T extends Annotation> {


    /**
     * 获得这个处理器处理的注解的类型
     *
     * @return
     */
     Class<T> getHandlerAnnotation();

    /**
     * 处理这个注解方法
     *
     * @param aClass      被注解的类
     * @param annotations 这个类上的所有注解
     */
    void process(Class<?> aClass, T  annotations, List<BeanDefine> beanDefines) ;


}
